package com.example.smartwaterapi.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 表盘商店实体类
 */
@Data
@TableName(value = "watchfaces", autoResultMap = true)
public class Watchface implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 表盘ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 表盘名称
     */
    private String name;

    /**
     * 描述
     */
    private String description;

    /**
     * 分类
     */
    private String category;

    /**
     * 标签
     */
    private String tags;

    /**
     * 类型 1:官方表盘 2:DIY表盘
     */
    private Integer type;

    /**
     * 创作者ID（DIY表盘时使用）
     */
    private Long creatorId;

    /**
     * 预览图
     */
    private String previewImage;

    /**
     * 表盘文件
     */
    private String fileUrl;

    /**
     * 文件大小
     */
    private Long fileSize;

    /**
     * 版本
     */
    private String version;

    /**
     * DIY配置数据
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Object diyConfig;

    /**
     * 模板类型
     */
    private String templateType;

    /**
     * DIY表盘是否公开
     */
    private Integer isPublic;

    /**
     * DIY分享码
     */
    private String shareCode;

    /**
     * 价格类型 0:免费 1:付费 2:会员专享 3:积分兑换
     */
    private Integer priceType;

    /**
     * 价格
     */
    private BigDecimal price;

    /**
     * 所需积分
     */
    private Integer pointsRequired;

    /**
     * 所需会员等级
     */
    private String membershipRequired;

    /**
     * 设计师
     */
    private String designerName;

    /**
     * 设计师ID
     */
    private Long designerId;

    /**
     * 下载次数
     */
    private Integer downloadCount;

    /**
     * 平均评分
     */
    private BigDecimal ratingAvg;

    /**
     * 评分人数
     */
    private Integer ratingCount;

    /**
     * 点赞数
     */
    private Integer likeCount;

    /**
     * 状态 1:上架 0:下架
     */
    private Integer status;

    /**
     * 是否推荐
     */
    private Integer isFeatured;

    /**
     * 排序
     */
    private Integer sortOrder;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
}
